草庐IT

Where 条件

全部标签

具有高级条件的Mysql,按相关性排序

我有一个用于搜索功能的sql查询,它有点复杂,但效果很好。SELECTSQL_CALC_FOUND_ROWSp.idasid,p.titleastitle,co.titleascompany,p.priceasprice,p.image_urlasimage_urlFROMproductspJOINproduct_categoriespcONp.id=pc.product_idJOINcategoriescatONpc.category_id=cat.idJOINcompaniescoONp.company_id=co.idWHEREMATCH(p.title)AGAINST("nal

php - 查看表 IF CASE 条件不能正常工作

查看表:工作不正常。我有两张table存款退出如果:Accountno=101balance=100$Accountno=102balance=50$当我取款一些money喜欢这个账户A/C101取款金额10$现在结果:减去所有账户余额当前余额:Accountno=101balance=90$-10$Accountno=102balance=40$-10$//But50每个账户减去存款余额CREATEVIEWmain_balance_newasselectaccount_noasaccount_no,SUM(deposit_amount)-(selectCASEWHENwithdraw

php - Mysql where 子句在 codeigniter 中不起作用

我有这样的MySQL查询:(我使用CodeIgniter)$report=$this->db->query("SELECTc.categoryName,note1.*,((SELECTSUM(noteAmount)FROMnotesWHEREDATE_FORMAT(noteDate,'%d-%m-%Y')=DATE_FORMAT(note1.noteDate,'%d-%m-%Y')ANDnoteType='cash_in')-(SELECTSUM(noteAmount)FROMnotesWHEREDATE_FORMAT(noteDate,'%d-%m-%Y')=DATE_FORMAT(

mysql - SQL:了解 WHERE 子句中的 OR 运算符

我有名为Movie、Genre和Keyword的表,我从中创建了一个名为“genkeyword”的View。View“genkeyword”有很多元组,因此可以在DBFiddle访问它。.我有以下查询:SELECTtitle,year,Count(DISTINCTgenre)ASgenre_freq,Count(DISTINCTkeyword)ASkeyword_freqFROMgenkeywordWHERE(genreIN(SELECTgenreFROMgenkeywordWHEREtitle='HarryPotterandtheDeathlyHallows')ORkeywordIN

mysql - 多个搜索条件

我正在使用以下查询,但目前我必须在每个参数中输入一个值才能使查询正常工作。有没有一种方法可以使参数可选,以便1个或多个值将返回一个结果?SELECT*FROMfilmWHEREdayLIKE'%day%'ANDmonthLIKE'%month%'ANDyearLIKE'%year%'有点像functionqueryData(year,month,day)declareYifyear==nothingY='%'elseY='%'+year+'%'declareMifmonth==nothingM='%'elseM='%'+month+'%'declareDifday==nothingD=

SQL:在 1:n 关系中查找不符合跨越多行的条件的条目

我正在尝试优化Akonadi中的SQL查询,遇到了以下显然不容易用SQL解决的问题,至少对我而言:假设以下表结构(应该在SQLite、PostgreSQL、MySQL中工作):CREATETABLEa(a_idINTPRIMARYKEY);INSERTINTOa(a_id)VALUES(1),(2),(3),(4);CREATETABLEb(b_idINTPRIMARYKEY,a_idINT,nameVARCHAR(255)NOTNULL);INSERTINTOb(b_id,a_id,name)VALUES(1,1,'foo'),(2,1,'bar'),(3,1,'asdf'),(4,

mysql - 为什么在 where 子句中带有 'LIKE word%word2' 的 mysql SELECT 不使用索引

查询很大,在WHERE子句中包含一长串“LIKE”测试,例如...SELECTcolAFROMtWHERE(colXLIKE'word1%word2%'ORcolXLIKE'word3%word4%'或者...);colX有一个索引。mysql使用索引,因为比较不以“%”开头。通过检查EXPLAIN,我看到当SQL字符串变大时,mysql停止使用索引并开始进行全表扫描。这似乎与where子句中“LIKE”测试的数量有关。在达到阈值时,我可以再添加一个“LIKE”,它会停止使用索引,并且比没有额外的“LIKE”花费的时间长10倍。是否有一些mysql变量可以控制这样的行为?

mysql - 员工培训分析查询的条件查询

我需要运行训练查询以返回以下问题的结果:“谁完成了这次训练,但没有完成那次训练?”在下面的简化表中,我想知道哪个员工已完成training_id1(如completed_date字段中的日期所示),但尚未完成training_id7。+-------------+-------------+----------------+|emp_id|training_id|completed_date|+-------------+-------------+----------------+|1|1|2010-04-02|+-------------+-------------+-------

mysql - 两个索引列上的 SELECT FOR UPDATE 和 WHERE 条件 - 什么是锁定策略?

这个问题是这个问题的逻辑延续:HowmanyrowswillbelockedbySELECT...ORDERBYxxxLIMIT1FORUPDATE?假设我有这样的选择:SELECTid,statusFROMjobWHEREstatus=XXXANDidIN(1,2,3)FORUPDATEid为主键,status索引在这种情况下,MySQL的锁定策略是什么?锁定仅匹配两个条件的行锁定所有匹配第一个条件的行+分别锁定所有匹配第二个条件的行锁定整个表我认为最合乎逻辑的是2。但是...我不确定。能详细说说吗? 最佳答案 好吧,我进行了测试

mysql在不满足JOIN条件时选择虚拟记录

我有两个表,一个是点击记录,另一个是用户表。如果用户已登录,则命中会与该用户的ID一起记录。如果用户未登录,则命中记录为user_id=0当我运行报告时,我想加入对用户表的点击以获取用户名——但是没有ID为0的用户,所以我得到了错误的数据(例如,所有非登录命中)。有没有办法在不满足JOIN条件的情况下选择像“Guest”这样的虚拟用户名?这是查询:SELECTDATE_FORMAT(a.timestamp,'%Y-%m-%d')date,count(a.*)hits,a.user_id,b.usernameFROMhitsaJOINusersbONa.user_id=b.idWHERE